package DAO;


import Conexion.Conexion;
import VO.asignatura;
import VO.estudiante;
import java.lang.reflect.Field;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.sql.ResultSet;

public class Persona {
    
    private String cedula;
    public String nombre;

    
    public Persona(String cedula, String nombre){
        this.cedula = cedula;
        this.nombre= nombre;
        
    }

    public Persona(){

    }

    public String getCedula() {
        return cedula;
    }

    public void setCedula(String cedula) {
        this.cedula = cedula;
    }

    public String getNombre() {
        return nombre;
    }


    public void setnombre(String nombre) {
        this.nombre = nombre;
    }


    public static String generarSql(String base, Object objeto){

      // Field[] userfield =Persona.class.getFields();
      
        Class clase = objeto.getClass();
        Field[] userfield = clase.getDeclaredFields();
     
        String nombres="";
        String campos="";
    //    Persona i=new Persona();
        
        System.out.println("numero campos=" + String.valueOf(userfield.length));
        
        for(int x=0;x<userfield.length-1;x++){
            if(!userfield[x].getName().equals("id_"+base)){
                nombres+=userfield[x].getName()+",";
            }
        }
        
      // System.out.println(nombres);
        
        nombres+=userfield[userfield.length-1].getName();
        
        for(int x=0;x<=userfield.length-1;x++){
            try {
             if(!userfield[x].getName().equals("id_"+base)){   
                campos += "'" + userfield[x].get(objeto)+"',";
            }
            } catch (IllegalArgumentException ex) {
                Logger.getLogger(Persona.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                Logger.getLogger(Persona.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
       
        campos=campos.substring(0, campos.length()-1);
       
        
        //campos+="'"+userfield[userfield.length-1].get(objeto)+"'";
        String sql="insert into"+" "+base+" "+" "+"("+nombres+") VALUES ("+campos.trim()+")";

    return sql;
    }
    
    
    
    public void registrarPersona(String tabla, Object objeto) throws Exception
    {
        
        Conexion con=new Conexion();
        con.ConexionPostgres();
                
        String sql=this.generarSql(tabla, objeto);
        try{
           con.actualizar(sql);
          }
        catch(Exception e){
          }
     
    }
    
    public ResultSet consultarPersona(String palabra) throws Exception
    {
       
        ResultSet consulta= null;
        Conexion con=new Conexion();
        con.ConexionPostgres();
        
        String sql="";
        
        if(palabra!=null){
           sql = "select * FROM persona where xxxxxx like'"+ palabra +"'";
         }
        else{
        	sql = "select * FROM persona";
        	
          
        	}
         try{
           consulta = con.consultar(sql);
            }
         catch(Exception e){
            }
        return consulta;
       
    }
    
    
    public static void main(String[] args)
    {
    	Persona p = new Persona("12345", "ana");
        System.out.println(p.generarSql("persona", p));
        
        asignatura a = new asignatura("Mate");
        System.out.println(p.generarSql("asignatura", a));
        
        estudiante e = new estudiante();
        System.out.println(p.generarSql("estudiante", e));
        
            	
    }
    
}
